#ifndef ESTRATEGIAHASHSHA1_H_
#define ESTRATEGIAHASHSHA1_H_

#include <string>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>

#include "EstrategiaHash.h"

using namespace std;

namespace Toolkit
{

class EstrategiaHashSHA1: public EstrategiaHash
{

public:
EstrategiaHashSHA1();

virtual ~EstrategiaHashSHA1();

virtual string hash(const string &claveSerializada) const;

private:

string calcularSha1(const string&, bool hexa = false) const;

void appendIntToStr(string& palabra, unsigned int entero) const;

void appendIntToStr(string& palabra, unsigned long int entero) const;

int strToInt(const string& arg) const;

string intToHexaStr(int arg) const;

string intToMemStr(int arg) const;

int leftrotate(unsigned int x, unsigned int y) const;

};

}

#endif /* ESTRATEGIAHASHSHA1_H_ */
